/**
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "core/ProcessorNode.h"
#include <memory>
#include <utility>
namespace org {
namespace apache {
namespace nifi {
namespace minifi {
namespace core {

ProcessorNode::ProcessorNode(const std::shared_ptr<Connectable> &processor)
    : processor_(processor),
      Connectable(processor->getName()),
      ConfigurableComponent() {
  utils::Identifier copy;
  processor->getUUID(copy);
  setUUID(copy);
}

ProcessorNode::ProcessorNode(const ProcessorNode &other)
    : processor_(other.processor_),
      Connectable(other.getName()) {
  utils::Identifier copy;
  processor_->getUUID(copy);
  setUUID(copy);
}

ProcessorNode::ProcessorNode(const ProcessorNode &&other)
    : Connectable(std::move(other)),
      processor_(std::move(other.processor_)) {
}

ProcessorNode::~ProcessorNode() {
}

bool ProcessorNode::isWorkAvailable() {
  return processor_->isWorkAvailable();
}

bool ProcessorNode::isRunning() {
  return processor_->isRunning();
}

} /* namespace core */
} /* namespace minifi */
} /* namespace nifi */
} /* namespace apache */
} /* namespace org */
